<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      //一.for of 循环
      //如果数据有迭代器 那么可以被for of 循环出来
      //let arr = ["张三", "李四", "王五"];
      //直接循环 数组的键值
      // for (let value of arr) {
      //   console.log(value);
      // } //只能循环有迭代器的数据

      // let obj = {
      //   name: "张三",
      //   age: 20,
      // };
      // for (let value of obj) {
      //   console.log(value);
      // }

      //循环数组的键名和键值
      // for (let [key, value] of arr.entries()) {
      //   console.log(key, value);
      // } //只能循环有迭代器的数据

      //
      //
      //Object.entries()  可以把对象转成 键名 键值 的数组
      // let obj = {
      //   name: "张三",
      //   age: 20,
      // };

      // var arr = Object.entries(obj);
      // for (let [key, value] of arr) {
      //   console.log(key, value);
      // }

      //二.生成器 : generator 可以生成迭代器
      //定义一个生成器函数
      function* fn() {
        yield "张三";
        yield "李四";
        yield "王五";
      }
      let myIterator = fn();
      // console.log(myIterator);
      // console.log(myIterator.next());
      // console.log(myIterator.next());
      // console.log(myIterator.next());
      // console.log(myIterator.next());

      for (let value of myIterator) {
        console.log(value);
      }
    </script>
  </body>
</html>
